App({
  onLaunch() {
    // 小程序初始化时执行
    console.log('小程序初始化');
    // 检查登录状态
    this.checkLoginStatus();
    
    // 添加全局页面路由监听
    const router = wx;
    const originalPush = router.navigateTo;
    const originalReplace = router.redirectTo;
    const originalSwitchTab = router.switchTab;
    
    // 重写navigateTo方法
    router.navigateTo = (options) => {
      console.log('navigateTo==== ', options.url);
      if (this.checkNeedLogin(options.url) && !this.globalData.hasLogin) {
        // 未登录且目标页面需要登录，重定向到登录页面
        console.log('未登录，重定向到登录页面');
        wx.redirectTo({
          url: '/pages/login/login'
        });
      } else {
        console.log('不需要登录');
        originalPush.call(router, options);
      }
    };
    
    // 重写redirectTo方法
    router.redirectTo = (options) => {
      if (this.checkNeedLogin(options.url) && !this.globalData.hasLogin) {
        // 未登录且目标页面需要登录，重定向到登录页面
        console.log('未登录，重定向到登录页面');
        wx.redirectTo({
          url: '/pages/login/login'
        });
      } else {
        originalReplace.call(router, options);
      }
    };
    
    // 重写switchTab方法
    router.switchTab = (options) => {
      if (this.checkNeedLogin(options.url) && !this.globalData.hasLogin) {
        // 未登录且目标页面需要登录，重定向到登录页面
        console.log('未登录，重定向到登录页面');
        wx.redirectTo({
          url: '/pages/login/login'
        });
      } else {
        originalSwitchTab.call(router, options);
      }
    };
  },

  onShow() {
    // 小程序启动，或从后台进入前台显示时执行
    console.log('小程序显示');
    
    

    // 获取当前页面路径
    const pages = getCurrentPages();
    if (pages.length > 0) {
      const currentPage = pages[pages.length - 1];
      const currentPagePath = '/' + currentPage.route;
      
      // 检查是否需要登录
      if (this.checkNeedLogin(currentPagePath) && !this.globalData.hasLogin) {
        // 未登录且当前页面需要登录，重定向到登录页面
        console.log('未登录，重定向到登录页面');
        wx.redirectTo({
          url: '/pages/login/login'
        });
      }
    }
  },

  onHide() {
    // 小程序从前台进入后台时执行
    console.log('小程序隐藏');
  },

  onError(msg) {
    // 小程序发生脚本错误，或者 api 调用失败时触发
    console.log('小程序错误', msg);
  },

  globalData: {
    userInfo: null,
    hasLogin: false,
    token: null,
    // jkUrl:'http://172.16.130.18:8080'
    jkUrl:'https://wxapi.kunszbq.cn'
  },

  // 检查登录状态
  checkLoginStatus() {
    // const token = wx.getStorageSync('token');
    // if (token) {
    //   this.globalData.hasLogin = true;
    //   this.globalData.token = token;
    //   // 获取用户信息
    //   this.getUserInfo();
    // }
    const hasLogin =  wx.getStorageSync('hasLogin');
    console.log('hasLogin==== ', hasLogin);
    if(hasLogin)
    {
      this.globalData.hasLogin = hasLogin;
    }

    const userInfo =  wx.getStorageSync('userInfo');
    console.log('userInfo==== ', userInfo);
    if(userInfo)
    {
      this.globalData.userInfo= userInfo;
    }
  },

  // 获取用户信息
  getUserInfo() {
    // 这里应该调用后端API获取用户信息
    // 暂时使用模拟数据
    // this.globalData.userInfo = {
    //   id: 1,
    //   name: '张三',
    //   avatar: 'https://example.com/avatar.jpg',
    //   role: '管理员'
    // };
    return this.globalData.userInfo;
  },

  // 登录方法
  // login(username, password, callback) {
  //   // 模拟登录API调用
  //   setTimeout(() => {
  //     // 模拟登录成功
  //     const token = 'mock-token-' + Date.now();
  //     wx.setStorageSync('token', token);
  //     this.globalData.hasLogin = true;
  //     this.globalData.token = token;
  //     // this.getUserInfo();
  //     // callback && callback(true, this.globalData.userInfo);
  //   }, 10);
  // },

  // 退出登录
  logout() {
    wx.removeStorageSync('token');
    this.globalData.hasLogin = false;
    this.globalData.token = null;
    this.globalData.userInfo = null;
    
    // 退出登录后跳转到首页
    // wx.switchTab({
    //   url: '/pages/home/home'
    // });
  },

  // 检查是否需要登录
  checkNeedLogin(pagePath) {
    // 除了登录页面和webview页面外，其他页面都需要登录
    return pagePath !== '/pages/login/login' && pagePath !== '/pages/webview/webview';
  }
});